package com.dragon.codefx.dataBase.controller.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

/**
 * 数据表列表查询结果
 * @author lsc
 * @since 2024/12/1 14:32
 **/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
@ApiModel("数据表列表查询结果")
public class ColumnListVO {
    /**
     * 表所在的数据库名（模式）
     */
    @ApiModelProperty("表所在的数据库名（模式）")
    private String tableSchema;
    /**
     * 表的名称
     */
    @ApiModelProperty("表的名称")
    private String tableName;
    /**
     *列的名称
     */
    @ApiModelProperty("列的名称")
    private String columnName;

    /**
     * 查询字段名
     */
    @ApiModelProperty("查询字段名")
    private String filedName;

    /**
     * 列的注释
     */
    @ApiModelProperty("列的注释")
    private String columnComment;
    /**
     *列在表中的位置
     */
    @ApiModelProperty("列在表中的位置")
    private String ordinalPosition;
    /**
     *列的默认值
     */
    @ApiModelProperty("列的默认值")
    private String columnDefault;
    /**
     *列是否允许为 `NULL`
     */
    @ApiModelProperty("列是否允许为 `NULL`")
    private Boolean isNullable;
    /**
     *列的数据类型
     */
    @ApiModelProperty("列的数据类型")
    private String dataType;
    /**
     *字符类型列的最大字符长度
     */
    @ApiModelProperty("字符类型列的最大字符长度")
    private String characterMaximumLength;
    /**
     *字符类型列的最大字节长度
     */
    @ApiModelProperty("字符类型列的最大字节长度")
    private String characterOctetLength;
    /**
     *数值类型列的精度。表示总位数。
     */
    @ApiModelProperty("数值类型列的精度。表示总位数。")
    private String numericPrecision;
    /**
     *数值类型列的小数位数
     */
    @ApiModelProperty("数值类型列的小数位数")
    private String numericScale;
    /**
     *日期或时间类型列的精度
     */
    @ApiModelProperty("日期或时间类型列的精度")
    private String datetimePrecision;
    /**
     *列的字符集
     */
    @ApiModelProperty("列的字符集")
    private String characterSetName;
    /**
     *列的排序规则
     */
    @ApiModelProperty("列的排序规则")
    private String collationName;
    /**
     *列的数据类型及其属性
     */
    @ApiModelProperty("列的数据类型及其属性")
    private String columnType;
    /**
     * 列是否为键的一部分（如主键、外键、唯一键）
     */
    @ApiModelProperty("列是否为键的一部分（如主键、外键、唯一键）")
    private String columnKey;
}
